Appearance
2. Creating a React App
装上Node,就可以用npx创建react项目
shell
npx create-react-app dojo-blog
运行:
shell
npm start
3. Components & Templates
和Vue一样,React也是组件化的框架,而模板不是用html,而是jsx书写。 index.js 引用 App.js 并注入内容。 App.js 书写 templates,然后export
出去。 在App.js中,有一个入口函数:
jsx
import './App.css';
function App() {
return (
// ... jsx templates
)
}
export default App;
4 - Dynamic Values in Templates
和 Vue 中类似,声明的变量,可以在模板中引用,只不过 Vue 用两对胡子括号,React 只用一对:
jsx
import logo from './logo.svg';
import './App.css';
function App() {
const welcome = 'ahhaha, 我在学react';
const obj = { name: 'haha', age: 12 };
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1>{ welcome}</h1>
<p>{ obj.name}</p>
</header>
</div>
);
}
export default App;
5 - Multiple Components
在import和export和use组件方面,React和Vue相差无几。
Navbar组件:
jsx
const Navbar = () => {
return (
<nav className="navbar">
<h1>The Dojo Blog</h1>
<div className="links">
<a href="/">Home</a>
<a href="/create">New Blog</a>
</div>
</nav>
);
}
export default Navbar;
App.js
jsx
import './App.css';
import Navbar from './Navbar';
function App() {
return (
<div className="App">
<Navbar />
</div>
);
}
export default App;
6 - Adding Styles
样式的增加方式稍有不同。
我们知道,Vue的样式是在每一个SFC下,有一个<style></style>
的标签,指定全局或当前页面的样式,一般会加上scoped属性,防止污染其他页面的样式。
而React的样式是通过在当前页面import
样式文件,然后把样式注入到当前页面的。
也可以写内联样式:
jsx
<a href="/create" style={{
color: 'white',
backgroundColor: '#f1356d',
borderRadius: '8px'
}}>New Blog</a>
7 - Click Events
React中的click event, 也像引用变量一样,把引用的函数写在大括号中。
普通点击事件写法: onClick={function}
jsx
const Home = () => {
const printHello = () => {
console.log('hello');
}
return (
<div className="home">
<button onClick={printHello}>Print Hello</button>
</div>
);
// 打印结果: hello
}
export default Home;
传参写法:用匿名函数包裹
jsx
const Home = () => {
const printParams = (name) => {
console.log(name);
}
return (
<div className="home">
<button onClick={ ()=> {printParams('hehe')} }>Print Whatever You Pass</button>
</div>
);
// 打印结果: hehe